#include "rpc_client.h"

namespace monitor {
  // 1.客户端的流程创建通道， 2.将通道传给stub这个stub与服务端进行交互，  
RpcClient::RpcClient() {
  auto channel = grpc::CreateChannel("192.168.77.129:50051",
                                     grpc::InsecureChannelCredentials());
  stub_ptr_ = monitor::proto::GrpcManager::NewStub(channel);
}
RpcClient::~RpcClient() {}

//调用服务端的SetMonitorInfo是响应为空； request设置为Monitor的信息。  
void RpcClient::SetMonitorInfo(const monitor::proto::MonitorInfo& monito_info) {
  ::grpc::ClientContext context; // 设置grpc上下文的内容。 包括多长时间就不连接了。 
  ::google::protobuf::Empty response;   // 客户端的响应为Empty ； 
  ::grpc::Status status =
      stub_ptr_->SetMonitorInfo(&context, monito_info, &response); // 通过存根调用SetMonitorInfo给服务端传monitor_info作为请求的信息；  
  if (status.ok()) {
  } else {
    std::cout << status.error_details() << std::endl;
    std::cout << "falied to connect !!!" << std::endl;
  }
}
// 获取信息，request 作为空。 我们要的是服务端的monitorInfo的响应。  是作为库函数被其他模块调用 。  
void RpcClient::GetMonitorInfo(monitor::proto::MonitorInfo* monito_info) {
  ::grpc::ClientContext context;
  ::google::protobuf::Empty request; 
  ::grpc::Status status =
      stub_ptr_->GetMonitorInfo(&context, request, monito_info); //  调用服务端的GetMonitorInfo函数。 
  if (status.ok()) {
  } else {
    std::cout << status.error_details() << std::endl;
    std::cout << "falied to connect !!!" << std::endl;
  }
}
}  // namespace monitor
